iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 17
0
自我挑戰組

不要太認真學 Python! 之 我又重新報名了系列 第 17

不要太認真學 Python! - Day 20

  • 分享至 

  • xImage
  •  

[前情提要]

昨天終於把比大小遊戲告一個段落了。
然後,昨天沒有發完文,真的是很良心不安啊...
身體欠安,今天終於補完了。
總之,我覺得我應該不要要求太高,不要一下子想弄懂很多東西,這樣會逼死自己。
不過這個問題似乎無解(?
總之,我會在思考看看怎麼解決。

https://ithelp.ithome.com.tw/upload/images/20190921/20120423q3AEjQmWbk.jpg


今天主題比較簡單只想要研究「水仙花數」
這是在 Python-100-Days 裡面看到的,但是教程裡就是一道練習題,什麼也沒說。當時瞄了一眼想說之後再來研究看看,今天應該是個好日子 哈

但是,我還是得候補,因為這就像小學生一樣,功課只要一沒寫,就永遠補不完了)QQ


水仙花數(Narcissistic number),又稱超完全數字不變數(pluperfect digital invariant, PPDI)、自戀數、自冪數、阿姆斯壯數或阿姆斯特朗數(Armstrong number)...看到這裡我滿腦子都是......

Yes

好了,離題了。

其實前幾天看了一眼還真是沒有看懂「水仙花數」到底是什麼東西。

今天讀了才發現這真的蠻厲害的,這確實是由「阿姆斯壯」所提出的想法,雖然在當時他並沒有將這個研究公諸於世,只有停留在討論階段而已。

我研究後的理解是,「水仙花數」是一個非常自戀的數字,因此才會用希臘神話 Narcissus 這段故事來幫這個數字命名。

簡單來說,「水仙花數」基本上就是三位數字而已。
153 → 是「三」位數字,因此把153拆開來,變成數字1、5、3。
分別把這三個數字變成立方(乘3次)後再相加,就會變成1+125+27,這個算式的結果就等於原本的數字。

總之,這就是「水仙花數」每位數字都很自戀,因為數值都不同,但是相加起來又還是原來的數字。

到底是誰想出來的啦,也太天才了吧...
只是,這好像也沒有什麼實際運用價值(?


總之,今天來試試看要怎麼找出1到1000之中,所有「水仙花數」呢?

for num in range(1, 1000):
    Hundreds digits = num // 100
    Ten digits = num // 10 % 10
    Digits = num % 10
    
    if num == Hundreds digit ** 3 +  Ten digits ** 3 + Digits ** 3:
        print(num)

好的,我實在不能理解,習題裡面的公式是

"""
找出100~999之间的所有水仙花数
水仙花数是各位立方和等于这个数本身的数
如: 153 = 13 + 53 + 3**3
Version: 0.1
Author: 骆昊
Date: 2018-03-02
"""
for num in range(100, 1000):
low = num % 10
mid = num // 10 % 10
high = num // 100
if num == low ** 3 + mid ** 3 + high ** 3:
print(num)

我自己是把它改成1-1000內的水仙花數
但是,我把low,mid,high 換成 原本的英文 Hundreds digits、Ten digits、Digits 它就不理我了。

這也是我一直以來的疑問,到底有哪些東西是有特定的關鍵字可以直接寫啊?

這個明天再來研究,我今天要先讓程式可以跑才行!!

我把程式整理好,變成下面的樣子:

for num in range(1, 1000):
    high = num // 100
    mid = num // 10 % 10
    low = num % 10
    
    if num == high ** 3 +  mid ** 3 + low ** 3:
        print(num)

成功跑出了計算!!!)為最近低迷的士氣小歡呼一下!!!

https://ithelp.ithome.com.tw/upload/images/20190922/201204234zkVWseVd7.png

https://ithelp.ithome.com.tw/upload/images/20190922/201204234GJ3wpGuCp.jpg

但是問題來了,我去看了看維基百科十進制水仙花束0-9都有算在內耶!

所以,我前面說的定義「三位數字」是比較嚴苛的檢驗法,撇除「三位數」這個公式還是錯啊,因為照理來說0-9都要顯現出來才對...

肯定是一開始觀念錯,才會步步錯。

最剛開始是覺得「水仙花數」感覺很浪漫,沒想到也是很難搞啊...
https://ithelp.ithome.com.tw/upload/images/20190922/20120423YElcNzjkpp.jpg
https://ithelp.ithome.com.tw/upload/images/20190922/20120423TIjxfl4ZsB.jpg

正常發揮中!!!
收工。


不要太認真學 Python! - Day 19


上一篇
不要太認真學 Python! - Day 19
下一篇
不要太認真學 Python! - Day 21
系列文
不要太認真學 Python! 之 我又重新報名了31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言